
import java.util.Iterator;
import java.util.Vector;
import javax.swing.table.DefaultTableModel;


public class ClinicaController {
    
    //<editor-fold defaultstate="collapsed" desc="Construtor">
    public ClinicaController(){
        
    }
    //</editor-fold>
    
    //<editor-fold defaultstate="collapsed" desc="Métodos">
    /*
     * Método que seta os atributos para cadastrar clinicas
     */
    public boolean cadastrarClinica(String nome,String apto,String bairro,String celular,String cidade,String cnpj,
            String email,String endereco,String numero,String razao_social,String telefone,String uf){
        Clinica clinica = new Clinica();
        clinica.setNome(nome);
        clinica.setApto(apto);
        clinica.setBairro(bairro);
        clinica.setCelular(celular);
        clinica.setCidade(cidade);
        clinica.setCnpj(cnpj);
        clinica.setEmail(email);
        clinica.setEndereco(endereco);
        clinica.setNumero(numero);
        clinica.setRazaoSocial(razao_social);
        clinica.setTelefone(telefone);
        clinica.setUf(uf);
        
        ClinicaDAO clinicaDAO = new ClinicaDAO();
        return clinicaDAO.cadastrarClinica(clinica);
    }
    
    /*
     * Método para buscar o próximo id a ser gravado no banco
     * recebe e passa como parametro o id da tabela a ser buscado.
     */
    public int buscarIDProx(String id_tabela){
        int id;
        ClinicaDAO clinicaDAO = new ClinicaDAO();
        id = clinicaDAO.buscar_ProximoID(id_tabela);
        return id;
    }
    /*
     * Método para busca de ids passando a linha
     * do registro selecionado da tabela.
     */
    public int buscarIDdeTabela(int linha){        
        ClinicaDAO clinicaDAO = new ClinicaDAO();
        return clinicaDAO.buscarID_Tabela(linha);
    }
    
    /*
     * Método para buscar clinicas, e setar em uma jtable
     */
    public void buscarClinica(String filtrar_por,String pesquisar){
        Vector<Clinica> vector = new Vector<Clinica>();
        ClinicaDAO clinicaDAO = new ClinicaDAO();
        
        vector = clinicaDAO.buscarClinica(filtrar_por,pesquisar);
        
        DefaultTableModel model = ((DefaultTableModel)frm_clinicas.jt_clinicas.getModel()); 
        model.getDataVector().removeAllElements();
        int linha=0;
            for (Iterator<Clinica> iterator = vector.iterator(); iterator.hasNext();) {
                
                model.addRow(new String[] {});
                Clinica clinica = iterator.next();
                frm_clinicas.jt_clinicas.setValueAt(clinica.getID(), linha, 0);
                frm_clinicas.jt_clinicas.setValueAt(clinica.getNome(), linha, 1);
                frm_clinicas.jt_clinicas.setValueAt(clinica.getRazaoSocial(), linha, 2);
                frm_clinicas.jt_clinicas.setValueAt(clinica.getCnpj(), linha, 3);
                frm_clinicas.jt_clinicas.setValueAt(clinica.getEmail(), linha, 4);
                frm_clinicas.jt_clinicas.setValueAt(clinica.getTelefone(), linha, 5);
                frm_clinicas.jt_clinicas.setValueAt(clinica.getCelular(), linha, 6);
                frm_clinicas.jt_clinicas.setValueAt(clinica.getEndereco(), linha, 7);
                frm_clinicas.jt_clinicas.setValueAt(clinica.getNumero(), linha, 8);
                frm_clinicas.jt_clinicas.setValueAt(clinica.getApto(), linha, 9);
                frm_clinicas.jt_clinicas.setValueAt(clinica.getUf(), linha, 10);
                frm_clinicas.jt_clinicas.setValueAt(clinica.getCidade(), linha, 11);
                frm_clinicas.jt_clinicas.setValueAt(clinica.getBairro(), linha, 12);
                linha++;
            }   
    }
    /*
     * Método que recebe os parametros de uma clinica a serem alterados
     * e atribui ao objeto clinica para ser acessado pela ClinicaDAO.
     */
    public boolean alterarClinica(int id_clinica,String nome,String apto,String bairro,String celular,String cidade,String cnpj,
            String email,String endereco,String numero,String razao_social,String telefone,String uf){
        
        Clinica clinica = new Clinica();
        clinica.setID(id_clinica);
        clinica.setNome(nome);
        clinica.setApto(apto);
        clinica.setBairro(bairro);
        clinica.setCelular(celular);
        clinica.setCidade(cidade);
        clinica.setCnpj(cnpj);
        clinica.setEmail(email);
        clinica.setEndereco(endereco);
        clinica.setNumero(numero);
        clinica.setRazaoSocial(razao_social);
        clinica.setTelefone(telefone);
        clinica.setUf(uf);
        
        ClinicaDAO clinicaDAO = new ClinicaDAO();
        return clinicaDAO.alterarClinica(clinica);
        
    }
    /*
     * Método para listar os campos de uma clinica recebendo por parametro
     * o respectivo id da clinica selecionada na tabela de consulta.
     */
    public void editarClinica(int id_clinica){
        Vector<Clinica> vector = new Vector<Clinica>();
        ClinicaDAO clinicaDAO = new ClinicaDAO();
        Clinica clinica = new Clinica();
        
        clinica.setID(id_clinica);
        vector = clinicaDAO.editarClinica(clinica);
        
        for (Iterator<Clinica> iterator = vector.iterator(); iterator.hasNext();) {
            
            clinica = iterator.next();
            frm_clinicas.tf_codigo.setText(clinica.getID()+"");
            frm_clinicas.tf_nome.setText(clinica.getNome()+"");
            frm_clinicas.tf_razao_social.setText(clinica.getRazaoSocial()+"");
            frm_clinicas.tf_cnpj.setText(clinica.getCnpj()+"");
            frm_clinicas.tf_email.setText(clinica.getEmail()+"");
            frm_clinicas.tf_telefone.setText(clinica.getTelefone()+"");
            frm_clinicas.tf_celular.setText(clinica.getCelular()+"");
            frm_clinicas.tf_endereco.setText(clinica.getEndereco()+"");
            frm_clinicas.tf_numero.setText(clinica.getNumero()+"");
            frm_clinicas.tf_apto.setText(clinica.getApto()+"");
            frm_clinicas.cb_uf.setSelectedItem(clinica.getUf());
            frm_clinicas.tf_cidade.setText(clinica.getCidade()+"");
            frm_clinicas.tf_bairro.setText(clinica.getBairro()+"");
        }
    }
    
    /*
     * Método para listar em um combobox clinicas
     * que estao cadastradas no banco de dados.
     */
    public void listarClinicasCombo(){
        ClinicaDAO clinicaDAO = new ClinicaDAO();
        clinicaDAO.listarClinicasCombo();
    }
    
    //</editor-fold>
}
